package com.hxexp.weixin.constant;

import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * 订单状态常量类
 *
 * @author li.jiang
 *
 */
public final class OrderStatus {
    /**
     * 已取消
     *
     * 订单未在规定时间内完成支付，系统将订单状态置为已取消，已取消的订单不能进行支付
     */
    public static final String CANCELLED = "-1";
    /**
     * 未支付
     *
     * 订单提交后进入支付页面没有完成支付
     */
    public static final String UNPAID = "0";
    /**
     * 已支付
     *
     * 订单提交后进入支付页面并成功完成支付
     */
    public static final String PAID = "1";
    /**
     * 部分退票
     *
     * 在已支付的订单内进行部分退票处理
     */
    public static final String PART_REFUND = "2";
    /**
     * 全退票
     *
     * 在已支付的订单内所有票都已退票处理
     */
    public static final String FULL_REFUND = "3";
    /**
     * 预定
     *
     * 订单已提交未进入支付页面
     */
    public static final String BOOKING = "4";
    /**
     * 已绑定乘客
     *
     * 订单绑定乘客后
     */
    public static final String BOUND_PASSENGER = "5";
    /**
     * 支付失败
     *
     * 订单在支付页面调用微信支付没支付成功
     */
    public static final String PAY_FAIL = "6";
    /**
     * 已退款
     *
     * 系统原因自动退款，整个订单的退款
     */
    public static final String REFUNDED = "7";
    /**
     * 编码和名称的映射
     */
    public static final Map<String, String> CODE_NAME_MAP = Collections.synchronizedMap(new LinkedHashMap<String, String>(9));

    // 映射数据初始化
    static {
        CODE_NAME_MAP.put(CANCELLED, "已取消");
        CODE_NAME_MAP.put(UNPAID, "未支付");
        CODE_NAME_MAP.put(PAID, "已支付");
        CODE_NAME_MAP.put(PART_REFUND, "部分退票");
        CODE_NAME_MAP.put(FULL_REFUND, "全退票");
        CODE_NAME_MAP.put(BOOKING, "预定");
        CODE_NAME_MAP.put(BOUND_PASSENGER, "未支付");
        CODE_NAME_MAP.put(PAY_FAIL, "支付失败");
        CODE_NAME_MAP.put(REFUNDED, "已退款");
    }
    private OrderStatus() {
    }

}
